#!/bin/bash

# delete_users.sh
# 功能说明:
# 1. 支持通过命令行参数传入用户名删除单个用户。
# 2. 支持通过文件传入用户列表（包含用户名和密码）批量删除用户。
# 3. 文件中的密码字段会被忽略，仅根据用户名删除用户。
# 4. 删除用户时也清理其家目录（可选）。
# 5. 跳过不存在的用户并给出提示。
# 6. 所有需要管理员权限的操作都通过 sudo 执行。

# 删除用户的函数
delete_user() {
  local username="$1"

  # 检查用户是否存在
  if id "$username" &>/dev/null; then
    # 删除用户及其家目录
    sudo userdel -r "$username" &>/dev/null
    if [[ $? -eq 0 ]]; then
      echo "User $username has been deleted successfully."
    else
      echo "Failed to delete user $username."
    fi
  else
    echo "User $username does not exist. Skipping..."
  fi
}

# 从文件删除用户的函数
process_file() {
  local file="$1"

  # 检查文件是否存在
  if [[ ! -f "$file" ]]; then
    echo "File $file does not exist. Please provide a valid file."
    exit 1
  fi

  # 逐行读取文件内容并删除用户
  while IFS= read -r line; do
    # 跳过空行和注释行
    [[ -z "$line" || "$line" == \#* ]] && continue

    # 提取用户名（忽略密码）
    local username=$(echo "$line" | awk '{print $1}')
    delete_user "$username"
  done < "$file"
}

# 主函数
main() {
  if [[ $# -eq 0 ]]; then
    echo "Usage: $0 [-f user_file] [username]"
    exit 1
  fi

  # 处理命令行参数
  while [[ $# -gt 0 ]]; do
    case "$1" in
      -f|--file)
        shift
        if [[ -n "$1" ]]; then
          process_file "$1"
          shift
        else
          echo "Error: Missing file name after -f."
          exit 1
        fi
        ;;
      *)
        delete_user "$1"
        shift
        ;;
    esac
  done
}

# 执行主函数
main "$@"

